package com.cs.beneficios.web.action;
import com.cs.beneficios.business.entity.SubProgramaDAO;
//import com.cs.beneficios.business.model.ProgramaVO;
import com.cs.beneficios.business.model.SubProgramaVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;
import java.sql.SQLException;
import java.util.Collection;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class ConsultarSubprogramaAction extends Action
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
    ActionMessages messages = new ActionMessages();
    try
    {
      	AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        HttpSession session = request.getSession();
        session.removeAttribute("frmSubprograma");
        //request.setCharacterEncoding("iso-8859-1");
        String strsubpgr = request.getParameter("subprograma");
        String strpgr = request.getParameter("programa");
        String strOption = (String)request.getAttribute("option");
        String strarea = "";
        strarea = (String)request.getAttribute("secretaria");
        if(strarea == null)
        {
          strarea = request.getParameter("secretaria");
        }
        if(strOption != null && strOption.equals("modsub"))
            strarea = ""; 
        
        request.setAttribute("msg","");
        if((Object)strpgr != null && (Object)strarea != null && (Object)strsubpgr != null)
        {
          SubProgramaVO criterea = new SubProgramaVO();
          //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
		  ConnectionFactory cf = new ConnectionFactory();
          if(!strsubpgr.equalsIgnoreCase(""))
          {
            criterea.setNombre(strsubpgr);
          }
          if(!strarea.equalsIgnoreCase(""))
          {
            criterea.setCodeArea(new Long(strarea));
          }
          if(!strpgr.equalsIgnoreCase(""))
          {
            criterea.setCodePrograma(new Long(strpgr));
          }
          Collection subprogramas = null;
          try
            {
              SubProgramaDAO objSubProgramaDAO = new SubProgramaDAO(cf);
              //HttpSession session = request.getSession();
              UserVO user = (UserVO)session.getAttribute("userInfo");
              
              subprogramas = objSubProgramaDAO.findSubPrograma(criterea,user.getCode(),user.getUserGroupName(), user.getCodeArea());
              //subprogramas = objSubProgramaDAO.findSubProgramaByUser(user.getCode(),user.getUserGroupName(),criterea);
              cf.closeConnection(objSubProgramaDAO.getConn());
            }catch(SQLException e){
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSUB - cwsub ********/");
            }
            if(subprogramas.size() > 0){
              //session.setAttribute("programas",programas);
              request.setAttribute("subprogramas",subprogramas);
            }else request.setAttribute("msg","No hay beneficios que cumplan los criterios de busqueda.");
        }
    }catch (UserException ue) 
		{
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
    }
    
    return mapping.findForward("success");
  }
}